package com.agenda.controller;

import java.util.ArrayList;
import com.agenda.concorrencia.Semaforo;
import com.agenda.model.Sala;
import com.agenda.model.Usuario;

public class ChatController {

	private static final int MAXIMO_SALAS = 3;

	private static ChatController INSTANCE;

	public static ChatController getINSTANCE() {
		if (INSTANCE == null)
			INSTANCE = new ChatController();

		return INSTANCE;
	}

	private Semaforo semaforo;
	private ArrayList<Sala> salas = new ArrayList<Sala>();

	private ChatController() {
		semaforo = new Semaforo();
	}

	public Sala reservarSala(Usuario usuario) {
		Sala sala = null;
		semaforo.DOWN();

		if (salas.size() == MAXIMO_SALAS) {
			sala = new Sala();
			sala.setProprietario(usuario);
			sala.setNumero(salas.size() + 1);

			salas.add(sala);
		}
		semaforo.UP();

		return sala;
	}

	public void liberarSala(Sala sala) {
		semaforo.DOWN();

		salas.remove(sala);

		semaforo.UP();
	}

	public void liberarSala(Usuario usuario) {
		semaforo.DOWN();

		for (Sala sala : salas) {
			if (sala.getProprietario().equals(usuario))
				salas.remove(sala);
		}

		semaforo.UP();
	}

}
